package com.java.base;
/*
 * 试题三：
3.1 编写程序，在一副扑克牌（不包含大小王）中随机的发六张牌，将这六张牌分为两手，前三张牌为一手，后三张牌为一手，并输出这两手牌的花色和点数。（分值：10%）
3.2 然后比较这两手牌的大小。两手牌的大小比较规则如下：（分值：20%）
1）	三条（三张牌点数相同）>同花顺（三张牌的花色相同且点数连续）>同花（三张牌花色相同）>顺子（三张牌的点数连续）>对子（三张牌中有两张点数相同）>单张（不满足以上任一情况）。
2）	牌的点数的大小顺序如下：A>K>Q>J>10>9>8>7>6>5>4>3>2
3）	处于同一级别的两手牌比较最大的一张牌的点数大小；点数相等的则比较次大的牌的点数大小，依此类推。
4）	若两手牌同为对子，则应比较成对的那张牌的大小；若成对的牌相等，则比较剩余的那张牌的点数大小。
5）	若两手牌同一级别，并且三张牌的点数都对应相等，则这两手牌相等。
 */
public class CardGarmes {
    static int[][] card=new int[4][13];
	public static void main(String[] args) {
		initialCard();
		produceCard();

	}
	public static void initialCard(){
		for(int i=0;i<card.length;i++){
			for(int j=0;j<card[i].length;j++){
				card[i][j]=(i+1)*100+(j+2);
			}
		}
	}

	public static void produceCard(){
		int[] aCard=new int[3];
		int[] bCard=new int[3];
		for(int k1=0,k2=0;k1<6;k1++){				
			int i=(int)(Math.random()*4);
			int j=(int)(Math.random()*13);	
			if(k1<3){
				aCard[k1]=card[i][j];
			}else{				
				bCard[k2++]=card[i][j];				
			}
	    }
		System.out.print("甲方的牌为：");
		printCard(aCard);
		System.out.print("\n乙方的牌为：");
		printCard(bCard);
		int compare=compare(aCard,bCard);
		if(compare>0){
			System.out.println("\n甲方获胜!");
		}else if(compare<0){
			System.out.println("\n乙方获胜!");
		}else{
			System.out.println("\n甲乙打成平局！");
		}
		

	}
	public static void printCard(int[] tempCard){
		for(int i=0;i<tempCard.length;i++){
			switch(tempCard[i]/100){
			case 1 : System.out.print("黑桃");break;
			case 2 : System.out.print("红心");break;
			case 3 : System.out.print("方块");break;
			case 4 : System.out.print("梅花");	
			}
			if(tempCard[i]%100<=10){
				System.out.print(tempCard[i]%100+"\t\t");

			}else {
				switch(tempCard[i]%100){
				   case 11 : System.out.print("J"+"\t\t");break;
				   case 12 : System.out.print("K"+"\t\t");break;
				   case 13 : System.out.print("Q"+"\t\t");break;
				   case 14 : System.out.print("A"+"\t\t");	
				}
			}
			
		}

	}
	public static  int compare(int[] aCard,int[] bCard){
	  return transferToNumber(aCard)-transferToNumber(bCard);
    }

	public static int transferToNumber(int[] tempCard){
	for(int i=0;i<tempCard.length-1;i++){
		for(int j=i+1;j<tempCard.length;j++){
			if(tempCard[i]%100<tempCard[j]%100){
				int temp=tempCard[i];
				tempCard[i]=tempCard[j];
				tempCard[j]=temp;
			}
		}
	}
	int num=0;
	
	if(tempCard[0]%100==tempCard[1]%100 && tempCard[1]%100==tempCard[2]%100){
		num=6*1000000+tempCard[0]%100*10000+tempCard[1]%100*100+tempCard[2]%100;
	}else if(tempCard[0]/100==tempCard[1]/100 && 
			tempCard[1]/100==tempCard[2]/100 &&
			tempCard[0]%100==tempCard[1]%100+1 &&
			tempCard[1]%100==tempCard[2]%100+1
			){
		num=5*1000000+tempCard[0]%100*10000+tempCard[1]%100*100+tempCard[2]%100;
	}else if(tempCard[0]/100==tempCard[1]/100 && 
			tempCard[1]/100==tempCard[2]/100){
		num=4*1000000+tempCard[0]%100*10000+tempCard[1]%100*100+tempCard[2]%100;
	}else if(tempCard[0]%100==tempCard[1]%100+1 &&
			tempCard[1]%100==tempCard[2]%100+1){
		num=3*1000000+tempCard[0]%100*10000+tempCard[1]%100*100+tempCard[2]%100;
	}else if(tempCard[0]%100==tempCard[1]%100 ){
		num=2*1000000+tempCard[0]%100*10000+tempCard[1]%100*100+tempCard[2]%100;
	}else if(tempCard[1]%100==tempCard[2]%100){
		num=2*1000000+tempCard[1]%100*10000+tempCard[2]%100*100+tempCard[0]%100;
	}else{
		num=1*1000000+tempCard[0]%100*10000+tempCard[1]%100*100+tempCard[2]%100;
	}
	
	return num;
	
}
}
	
